package com.tedu.api.list;

import org.junit.Test;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;

/**
 * 数组：遍历数据    遍历数据第三种：普通for、增强for、Arrays工具类
 * √集合：遍历数据    遍历数据第三种：普通for、增强for、Arrays工具类
 * 保存数据优选：集合---遍历数据优选Iterator迭代器
 * Iterator迭代器       接口----依赖Collection提供方法：iterator()
 *
 * 集合：迭代器的使用方式：问、取、 【不是必须操作】删
 */
public class Collection_IteratorAPI {
    @Test
    public void testIterator(){
        Collection c1=new ArrayList();
        c1.add("one");c1.add("two");c1.add("three");
        /**
         * iterator()方法：获取集合的迭代器---遍历数据
         */
        Iterator it=c1.iterator();
        //迭代器使用：1问---集合中是否存在元素【集合元素不确定】
        /**
         * hasNext()     返回值：boolean
         * 作用：判断集合当中是否还有元素可以遍历，
         *      返回true有元素、false没有元素
         */
        while(it.hasNext()){// 迭代器：问操作--hasNext()
            //2.取---如果集合中存在元素：取出元素--next()
            /**
             * E next()   返回值：E泛型  简单理解：Object
             * 作用：遍历取出元素
             */
            String str=(String) it.next();
            System.out.println("集合迭代器"+str);
        }
    }
    /**

     */
    @Test
    public void testFor(){
        //创建集合
        Collection collection=new ArrayList();
        //需求： 10个元素，普通for增加元素0~9数值
        for(int i=0;i<10;i++){
            collection.add(i);
        }
        System.out.println("打印集合数据"+collection);
        //获取集合中所有的数据-----------------操作：遍历
        // ①使用普通for遍历 collection集合，提醒：查API
        //获取数组元素：int[] arr={1,2,3};     数组名[下标]  arr[1]
        //获取集合元素：List---方法             集合名[下标]  ×
        for(int i=0;i<collection.size();i++){//i 值：拿下标
            System.out.println("普通for输出集合："+((List<Object>)collection).get(i));
        }
        //②使用增强for遍历：  语法：for(Integer i:集合名){}
        //                      for(Object i:collection){}
        //collection是顶级集合--存任何数据---Object类型
        for (Object i:collection){
            System.out.println("增强for遍历集合:"+i);
        }

    }
    /**
     * 遍历同时对集合做元素删除操作--Iterator迭代器
     * Iterator迭代器--删除操作【真删元素】
     * remove()        返回值：void
     * 作用：删除迭代器获取的元素【理解：next()取元素之后，删除】
     * Iterator迭代器使用规则：问、取、删
     */
    @Test
    public void testRemove(){
        Collection c=new ArrayList();
        c.add("十一");c.add("元旦");c.add("春节");c.add("元宵节");
        //创建集合Collection---遍历同时删除春节的元素
        System.out.println("Collection集合："+c);
        //1.依赖集合Collection--提供iteration()方法：创建迭代器对象
    }
}